import re
from src.utils.config import logger
PROP_LIST = ['固态硬盘', '处理器', '内存', '显卡', '机械硬盘', '国内保修情况', '购买渠道', '键盘', '颜色', '屏幕类型','unknown']


def rename_cpu(cpu_name):
    """
    处理CPU名称
    2020.08.27 标准cpu 属性值简化修改，训练模型继续简化苹果品牌，非苹果品牌由于cpu非标准，简化易出错，故不采取简化措施
    :param cpu_name: 原始CPU名称
    :return:
    """
    try:
        cpu_name = cpu_name.lower()
        if cpu_name.endswith('g'):
            if 'i3' in cpu_name:
                return 'i3'
            if 'i5' in cpu_name:
                return 'i5'
            if 'i7' in cpu_name:
                return 'i7'
            # 酷睿
            if 'duo' in cpu_name:
                return '酷睿 Duo'
            if 'm7' in cpu_name:
                return 'intel 酷睿 m7系列'
            if 'm5' in cpu_name:
                return 'intel 酷睿 m5系列'
            if 'm3' in cpu_name:
                return 'intel 酷睿 m3系列'
    except Exception as e:
        logger.info('cpu_name has error:{},cpu_name:{}'.format(e,cpu_name))
        return 'unknown'
    return cpu_name.strip()


def rename_gpu(gpu_name):
    """
    处理GPU名称
    2020.08.27 标准显卡 属性值简化，由于已经简化，故模型不再处理，
    :param gpu_name: 原始GPU名称
    :return:
    """
    try:
        gpu_name = gpu_name.lower()
        if '＋' in gpu_name:
            gpu_name = gpu_name.split('＋')[0].strip()
        if '+' in gpu_name:
            gpu_name = gpu_name.split('+')[0].strip()

        if 'nvidia' in gpu_name:
            gpu_name = gpu_name.replace('geforce', '')
            gpu_name = gpu_name.replace('gtx', '')
            gpu_name = gpu_name.replace('gt', '')

        gpu_name = re.sub('\s+', ' ', gpu_name)
    except Exception as e:
        logger.info('gpu_name has error:{},gpu_name:{}'.format(e,gpu_name))
        return 'unknown'
    return gpu_name.strip()


# 内存映射
# memory_mapping = {'6GB': '4GB-6GB', '16GB': '16GB-18GB', '10GB': '8GB-14GB', '8GB': '8GB-14GB', '1GB': '2GB及以下',
#                   '10GB-14GB': '8GB-14GB', '2GB': '2GB及以下', '1.5GB及以下': '2GB及以下', '1.5GB及以下/无内存': '2GB及以下', '20GB-24GB': '16GB-18GB',
#                   '3GB': '2GB及以下', '4GB': '4GB-6GB', '5GB': '4GB-6GB',
#                   '12GB': '8GB-14GB','20GB': '16GB-18GB','32G':'32GB及以上','64GB':'32GB及以上'
#                   }
memory_mapping = {'1.5GB及以下': '2GB以下', '1.5GB及以下/无内存': '2GB以下', '1GB': '2GB以下', '2GB': '2GB-4GB', '3GB': '2GB-4GB','2GB-3GB': '2GB-4GB',
                  '4GB': '4GB-8GB', '5GB': '4GB-8GB', '6GB': '4GB-8GB', '4GB-6GB': '4GB-8GB', '6GB-8GB': '8GB-16GB',
                  '8GB': '8GB-16GB', '10GB-14GB': '8GB-16GB', '12GB': '8GB-16GB','8GB-14GB':'8GB-16GB','10GB':'8GB-16GB','无内存':'2GB以下',
                  '16GB': '16GB-32GB','20GB': '16GB-32GB','24GB':'16GB-32GB','16GB-18GB':'16GB-32GB','20GB-24GB':'16GB-32GB','32G':'32GB及以上','64GB':'32GB及以上'
                  }
# SSD映射
ssd_mapping = {'固态硬盘32GB及以下': '固态硬盘60GB-80GB', '固态硬盘64GB': '固态硬盘60GB-80GB',
               '固态硬盘120GB': '固态硬盘120GB-192GB', '固态硬盘1TB': '固态硬盘1TB及以上',
               '固态硬盘240GB': '固态硬盘240GB-288GB', '固态硬盘768GB': '固态硬盘544GB-768GB',
               '固态硬盘128GB': '固态硬盘120GB-192GB', '固态硬盘256GB': '固态硬盘240GB-288GB',
               '固态硬盘512GB': '固态硬盘480GB-512GB', '固态硬盘320GB-400GB': '固态硬盘240GB-288GB',
               '固态硬盘160GB': '固态硬盘120GB-192GB', '固态硬盘2TB': '固态硬盘1TB及以上',
               '固态硬盘480GB': '固态硬盘480GB-512GB', '固态硬盘320GB': '固态硬盘240GB-288GB',
               '固态硬盘80GB': '固态硬盘60GB-80GB', '固态硬盘1.5TB以上': '固态硬盘1TB及以上',
               '固态硬盘1.5TB':'固态硬盘1TB及以上','固态硬盘1TB-1.5TB':'固态硬盘1TB及以上',
               '固态硬盘3TB':'固态硬盘1TB及以上','固态硬盘4TB':'固态硬盘1TB及以上','固态硬盘8TB':'固态硬盘1TB及以上',
               '固态硬盘640GB': '固态硬盘544GB-768GB',
               }
# HHD映射
hhd_mapping = {'机械硬盘500GB': '机械硬盘500GB-1TB', '机械硬盘750GB': '机械硬盘500GB-1TB', '机械硬盘1TB': '机械硬盘500GB-1TB',
               '机械硬盘2TB': '机械硬盘1.5TB及以上', '机械硬盘250GB': '机械硬盘250GB及以下',
               '机械硬盘160GB': '机械硬盘250GB及以下', '机械硬盘120GB': '机械硬盘250GB及以下',
               '机械硬盘80GB': '机械硬盘250GB及以下', '机械硬盘60GB': '机械硬盘250GB及以下',
               '机械硬盘100GB': '机械硬盘250GB及以下', '机械硬盘640GB': '机械硬盘500GB-1TB',
               '机械硬盘320GB': '机械硬盘250GB及以下', '机械硬盘200GB': '机械硬盘250GB及以下',
                '机械硬盘1.5TB': '机械硬盘1.5TB及以上'
               }
# 产品等级映射
level_mapping = {'SS': 'S', 'B+': 'B', 'C+': 'C', 'C-': 'D', 'D+': 'D', 'D-': 'D', 'E+': 'E', 'F+': 'E', 'F':'E',
                 'H': 'G', 'I+': 'I'}
